package ihm;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.UnknownHostException;

import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import client.CommunicationClient;
import client.Main;

/**
 * Classe PannConnexion
 *
 */
public class PannConnexion extends JPanel
{

	private static final long serialVersionUID = 1L;
	private JButton seConnecter, sInscrire, connection, inscription,retour;
	private JLabel email, motDePasse, nom, prenom;
	private JTextField emailTexte, nomTexte, prenomTexte;
	private JPasswordField mDpTexte;
	private String mail;
	private CommunicationClient comm;
	
	/** Constructeur **/
	public PannConnexion(FenetreConnexion _fen)
	{	
		FlowLayout flow1=new FlowLayout(FlowLayout.CENTER,200,15);setLayout(flow1);
		seConnecter=new JButton("Se connecter");add(seConnecter);
		sInscrire=new JButton("S'inscrire");add(sInscrire);
		nom=new JLabel("Nom :");nom.setForeground(Color.magenta);add(nom);
		nomTexte=new JTextField(20);add(nomTexte);
		prenom=new JLabel("Prenom :");prenom.setForeground(Color.magenta);add(prenom);		
		prenomTexte=new JTextField(20);add(prenomTexte);
		email=new JLabel("Adresse mail :");email.setForeground(Color.magenta);add(email);
		emailTexte=new JTextField(20);add(emailTexte);
		motDePasse=new JLabel("Mot de passe :");motDePasse.setForeground(Color.magenta);add(motDePasse);
		mDpTexte=new JPasswordField(20);add(mDpTexte);
		connection=new JButton("Connexion");add(connection);
		inscription=new JButton("Inscription");add(inscription);	
		retour=new JButton("Retour");add(retour);
	

		connection.setVisible(false);
		inscription.setVisible(false);
		email.setVisible(false);
		emailTexte.setVisible(false);
		motDePasse.setVisible(false);
		mDpTexte.setVisible(false);
		nom.setVisible(false);
		nomTexte.setVisible(false);
		prenom.setVisible(false);
		prenomTexte.setVisible(false);
		retour.setVisible(false);
		
		
		//appui sur bouton se connecter
		seConnecter.addActionListener(new ActionListener() 
		{	
			@Override
			public void actionPerformed(ActionEvent e) 
			{
				email.setVisible(true);
				emailTexte.setVisible(true);
				motDePasse.setVisible(true);
				mDpTexte.setVisible(true);
				connection.setVisible(true);
				seConnecter.setVisible(false);
				inscription.setVisible(false);
				sInscrire.setVisible(false);
				retour.setVisible(true);
			}
		});
		
		//Appui sur le bouton connection
		connection.addActionListener(new ActionListener()
		{
			@Override
			public void actionPerformed(ActionEvent arg0)
			{
			//	boolean connecte=false;
				connection.setEnabled(false);
				retour.setVisible(false);
				mail=emailTexte.getText();
				String password=new String(mDpTexte.getPassword());

				try {
					comm = new CommunicationClient(null,null,mail,password,1);				
					comm.getComE().setAction(1);
					comm.start();
				} catch (UnknownHostException e) {e.printStackTrace();}
				catch (IOException e) {e.printStackTrace();}
				
			/*	CommunicationClient comm = new CommunicationClient(null,null,mail,password,1);//a modif
				//CommunicationClient comm = new CommunicationClient(mail,password,1);			
				comm.start();*/
				//CommunicationClient comm = new CommunicationClient(mail,password,1);							
				Main.fen.setVisible(false);
				//fen.setVisible(false);

			}
		});
		
		//appui sur le bouton sInscrire
		sInscrire.addActionListener(new ActionListener() 
		{	
			@Override
			public void actionPerformed(ActionEvent e) 
			{
				email.setVisible(true);
				emailTexte.setVisible(true);
				motDePasse.setVisible(true);
				mDpTexte.setVisible(true);
				nom.setVisible(true);
				nomTexte.setVisible(true);
				prenom.setVisible(true);
				prenomTexte.setVisible(true);
				connection.setVisible(false);
				seConnecter.setVisible(false);
				inscription.setVisible(true);
				sInscrire.setVisible(false);
				retour.setVisible(true);
			}
		});
		
		
		//Appui sur le bouton inscription
		inscription.addActionListener(new ActionListener()
		{
			@Override
			public void actionPerformed(ActionEvent arg0)
			{
			//	boolean connecte=false;
			//	inscription.setEnabled(false);
				try {
					comm=new CommunicationClient(null, null, null, null, 3);
				} catch (UnknownHostException e) {e.printStackTrace();} 
				catch (IOException e) {e.printStackTrace();}
				String password=new String(mDpTexte.getPassword());
				String nom2 = nomTexte.getText();
				String prenom2 = prenomTexte.getText();
				String mail = emailTexte.getText();
				comm.getComE().setmDp(password);
				comm.getComE().setfName(prenom2);
				comm.getComE().setNam(nom2);
				comm.getComE().setEmail(mail);
				comm.getComE().setAction(3);
				comm.start();
			
				retour.setVisible(false);
				email.setVisible(false);
				emailTexte.setVisible(false);
				motDePasse.setVisible(false);
				mDpTexte.setVisible(false);
				nom.setVisible(false);
				nomTexte.setVisible(false);
				prenom.setVisible(false);
				prenomTexte.setVisible(false);
				seConnecter.setVisible(true);
				sInscrire.setVisible(true);
				inscription.setVisible(false);
							
			} 
		});
		
		retour.addActionListener(new ActionListener() 
		{
			
			@Override
			public void actionPerformed(ActionEvent arg0) 
			{				
				connection.setVisible(false);
				inscription.setVisible(false);
				email.setVisible(false);
				emailTexte.setVisible(false);
				motDePasse.setVisible(false);
				mDpTexte.setVisible(false);
				nom.setVisible(false);
				nomTexte.setVisible(false);
				prenom.setVisible(false);
				prenomTexte.setVisible(false);
				retour.setVisible(false);
				seConnecter.setVisible(true);
				sInscrire.setVisible(true);				
			}
		});		
	}//fin PannConnexion()
	
	/** Methode qui dessine ds le panneau**/
	public void paintComponent(Graphics g) 
	{
		super.paintComponent(g); 
		
		//image de fond
		String fichier = "aa.jpg";		
		BufferedImage im;
		try {
			im = ImageIO.read(new File(fichier));
			g.drawImage(im, 0, 0, 500, 600, null);			
		} catch (IOException e) {e.printStackTrace();}
	}//fin paintComponent()
	
}//fin Classe PannConnexion
